<?php
include_once("../inc/common.php");

// Inicialização dos dados de saída ///////////////////////////////
$result["ok"] = "0";

// Captura a ação a ser executada /////////////////////////////////
$action = Param::get("action");

// Salvar turma ///////////////////////////////////////////////////
if ($action == "salvar") {
	// Prepara dados de retorno
	$result["ok"] = "0"; // começa com não OK
	// Validação
	$error = new Error();
	if (Param::getInt("f_id_curso") == 0) $error->add('Curso deve ser informado.');
	if (!Validation::date(Param::get("f_dt_inicio"))) $error->add('Data inválida');
	if (Param::getInt("f_nro_carga_horaria") == 0) $error->add('Carga horária deve ser informada.');
	if (Param::getInt("f_nro_horas_dia") == 0) $error->add('Horas por dia deve ser informada.');

	// Tratamento dos campos
	$dt_inicio = Dates::format(Param::get("f_dt_inicio"));

	// Atualização dos dados
	if ($error->hasError()) {
		$result["erro"] = $error->toString();
	} else {
		$sql = new UpdateSQL();

		$sql->setTable("turma");
		$sql->setKey("id_turma", Param::getInt("f_id"), "Number");

		$sql->addField("dt_inicio", $dt_inicio, "Date");
		$sql->addField("id_curso", Param::getInt("f_id_curso"), "Number");
		$sql->addField("id_instrutor", Param::getInt("f_id_instrutor"), "Number");
		$sql->addField("nro_carga_horaria", Param::getInt("f_nro_carga_horaria"), "Number");
		$sql->addField("nro_horas_dia", Param::getInt("f_nro_horas_dia"), "Number");

		if (Param::getInt("f_id") > 0) { // alteração
			$sql->setAction("UPDATE");
			DBUtils::executeSQL($sql->getSQL());
			$result["modo"] = "a";
		} else { // inclusão
			$sql->setAction("INSERT");
			$last_id = DBUtils::executeSQL($sql->getSQL());
			$result["modo"] = "i";
			$result["id"] = $last_id;
		}

		$result["sucesso"] = "Dados atualizados com sucesso!";
		$result["ok"] = "1";
		Messages::sendSuccess($result["sucesso"]);
	}
	echo json_encode($result);
}

// Excluir turma //////////////////////////////////////////////////
if ($action == "excluir") {
	$itens = "";
	try {
		$itens = implode(",", Param::getArray("sel"));
	} catch (Exception $e) {
		$itens = "";
	}

	// validação
	$error = new Error();
	$sqlQtdeMat = "SELECT count(id_matricula) as qtde FROM matricula WHERE id_turma IN (" . $itens . ")";
	if (DBUtils::getValue($sqlQtdeMat) > 0) $error->add("Existem turmas com alunos matriculados.");
	if (strlen($itens) == 0) $error->add("Nenhum registro selecionado.");

	// Transação
	if ($error->hasError()) {
		Messages::sendError($error->toString());
		Http::redirect("../mod_turma/turma-lista.php");
	} else {
		try {
			$sql = "DELETE FROM turma WHERE id_turma IN (" . $itens . ")";
			DBUtils::executeSQL($sql);
			Messages::sendSuccess("Turmas excluídas com sucesso!");
		} catch (Exception $e) {
			Messages::sendError("Erro durante a exclusão de turmas");
		}
	}

	// Retorna
	Http::redirect("../mod_turma/turma-lista.php");
}

// Carrega instrutores ////////////////////////////////////////////
if ($action == "carregainstrutores") {
	$chave = Param::get("chave");
	$rows = DBUtils::getRows("SELECT instrutor.* FROM instrutor, instrutor_curso WHERE instrutor.id_instrutor=instrutor_curso.id_instrutor AND instrutor_curso.id_curso=".$chave);
	$saida = "";
	foreach ($rows as $row) {
		$saida .= "<option value='".$row["id_instrutor"]."'>".$row["txt_nome"]."</option>";
	}
	if ($chave == "") $saida = "";
	$result["valor"] = $saida;
	echo json_encode($result);
}
?>
